/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.fatec.controlecal;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.Date;
import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.List;
import javax.microedition.rms.RecordEnumeration;
import javax.microedition.rms.RecordStoreException;

/**
 *
 * @author gilberto
 */
public class Categoria {

    private int id;
    private String nome;

    public boolean gravar(Conexao conexao,int id) {
        boolean resultado = false;
        try {
            conexao.abrirStore();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(baos);
            dos.writeInt(id);
            dos.writeUTF(getNome());            
            
            byte bytes[] = baos.toByteArray();
            conexao.getStore().addRecord(bytes, 0, bytes.length);
            conexao.fecharStore();
           
            resultado = true;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return resultado;
    }
    public boolean alterar(Conexao conexao) {
        boolean resultado = false;
        try {
            conexao.abrirStore();
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            DataOutputStream dos = new DataOutputStream(baos);
            dos.writeInt(id);
            dos.writeUTF(getNome());      
            
            byte bytes[] = baos.toByteArray();
            conexao.getStore().setRecord(id,bytes, 0, bytes.length);
            conexao.fecharStore();
           
            resultado = true;
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        return resultado;
    }
    
    public int getAutoIncrement(Conexao conexão){
        int total = 0;
        try {
            conexão.abrirStore();  
            RecordEnumeration re = conexão.getStore().enumerateRecords(null, null, false);
            while(re.hasNextElement()){
                int id = re.nextRecordId();                
                byte bytes[] = conexão.getStore().getRecord(id);
                ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
                DataInputStream dis = new DataInputStream(bais);
                total = dis.readInt();
            }
            conexão.fecharStore();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
        
        return ++total;
    }
    
    public Categoria[] getCategorias(Conexao conexão){ 
        Categoria categorias[] = null;
        try{
            conexão.abrirStore();            
            categorias = new Categoria[conexão.getStore().getNumRecords()];
            int i=0;
            RecordEnumeration re = conexão.getStore().enumerateRecords(null, null, false);
            while(re.hasNextElement()){
                int id = re.nextRecordId();
                System.out.println(id);
                Categoria cat = new Categoria();
                
                byte bytes[] = conexão.getStore().getRecord(id);
                ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
                DataInputStream dis = new DataInputStream(bais);
                cat.setId(dis.readInt());
                cat.setNome(dis.readUTF());
                
                categorias[i++] = cat;
            }
            conexão.fecharStore();
        }catch(Exception ex){
            ex.printStackTrace();
        }
        return categorias;
    }

    /**
     * @return the id
     */
    public int getId() {
        return id;
    }

    /**
     * @param id the id to set
     */
    public void setId(int id) {
        this.id = id;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }
    
}
